﻿#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)

#include<stdio.h>

int main()
{
    //标志位思想
    /*写程序计算下面式子的结果：1 - 3 + 5 - 7 + 9 - 11 + 13 - 15 + 17 - 19 + 21*/
       /* int sum = 0;
        int flag = 1;

        for (int i = 1; i <= 21; i += 2)
        {
            sum += i * flag;
            flag = -flag;
        }
        printf("%d", sum);*/
    
    


    //标识位思想
    /*输入一个数据判断这个数据是不是素数，
        素数就是只能被1和它本身整除的数据，即除了1和它本身没有其他因数的数。比如：7  11  13  23*/
       /* int num, flag = 0;
        printf("请输入一个数据：");
        scanf("%d", &num);
        for (int i = 2; i < num; i++)
        {
            if (num % i == 0)
            {
                printf("这个数据不是素数");
                flag = 1;
                break;
            }

        }
        if (flag == 0)
            printf("这个数据是素数");*/
    





    //标识位思想
    /*韩信点兵，韩信每次点兵先让队伍3个人一排，看下尾数；然后再让队伍5个人一排，看下尾数；
        最后在让队伍7个人一排，看下尾数就直到队伍的总人数了。
        现在设计一个程序，输入3个人一排的队尾人数a，输入5个人一排的队尾人数b, 在输入7个人一排的队尾人数c, 尝试获取队伍的总人数，也可能无解。
        已知队伍的总人数不大于100，不小于10.
        一个数除以3余2，除以5余3，除以7余2，求这个数  （a < 3, b < 5, c < 7）`*/
        /*int num, a, b, c, flag = 0;
        printf("请输入三个数：");
        scanf("%d %d %d", &a, &b, &c);
        for (int num = 10; num < 100; num++)
        {
            if (num % 3 == a && num % 5 == b && num % 7 == c)
            {
                printf("总人数为%d", num);
                flag = 1;
                break;
            }
        }
        if (flag == 0)
            printf("无解");*/


//        求斐波那契额数列
//        /*（1）打印斐波那契额数列的前n项数据。   1  1  2  3  5  8  13 21 ....每一项都等于前两项之和*/
       /* int i, n, next, t1 = 1, t2 = 1;
        printf("请输入斐波那契数列的项数: ");
        scanf("%d", &n);

        printf("斐波那契数列的前%d项为: ", n);
        for (i = 1; i <=n; i++)
        {
            printf("%d ", t1);
            next = t1 + t2;
            t1 = t2;
            t2 = next;
        }*/
//        （2）打印斐波那契额数列的第n项数据
        //int i, n, next=0, t1 = 0, t2 = 1;
        //printf("请输入斐波那契数列的项数: ");
        //scanf("%d", &n);

        //printf("斐波那契数列的%d项为: ", n);
        //for (i = 1; i < n; i++)
        //{
        //   
        //    next = t1 + t2;
        //    t1 = t2;
        //    t2 = next;
        //}
        //printf("%d",next);
//
//
//    求进制数
//    /*有个16位的整数，每4位为一个数，求4个数据的和*/
//        int sum = 0;
//        unsigned int a = 0x1234;
//        sum += (a & 0xf000) >> 12;//取高位
//        sum += (a & 0x0f00) >> 8;
//        sum += (a & 0x00f0) >> 4;
//        sum += a & 0x000f;
//        printf("%d", sum);
//
//编写程序需求如下：
//取u16 a = 0xaabb的低八位-- 0xbb
//取u16 b = 0xccdd的中八位-- 0xcd   0x0cd0 << 4  0xcd00
//取u16 c = 0xeeff的高八位-- 0xee  -- - 0xee00 << 8 == 0xee0000
//合成一个数据0xeecdbb

    //unsigned int res;
    //
    //unsigned short a = 0xaabb;
    //unsigned short b = 0xccdd;
    //unsigned short c = 0xeeff;
    //
    //res = (a & 0x00ffUL) | ((b & 0x0ff0) << 4) | ((c & 0xff00UL) << 8);
    //
    //printf("%x", res);
    // 
    // 
// 
//          //求进制数
//        u8 a, 输入一个数据放入a中，计算这个数据的二进制位中1的个数
//        #define u8 unsigned char
////法1：
    //unsigned char a;
    //int sum = 0;
    //printf("请输入一个数： ");
    //scanf("%hhu", &a); // 注意使用%hhu来读取unsigned char 
    //for (int i = 0; i < 8; i++)
    //{
    //    if ((a & 0x01) == 1)
    //    {
    //        sum++;
    //    }   
    //    a = a >> 1;
    //}
    //printf("二进制位中1的个数为%d", sum);
//
////法2：
//    unsigned char a;
//    int sum = 0;
//    printf("请输入一个数： ");
//    scanf("%hhu", &a); // 注意使用%hhu来读取unsigned char 
//    while (a != 0)
//    {
//        a = a & (a - 1);
//        sum++;
//    }
//    printf("二进制位中1的个数为%d", sum);
////法3：
//    unsigned char a;
//    int sum = 0;
//    printf("请输入一个数： ");
//    scanf(" %hhu", &a); // 注意使用%hhu来读取unsigned char 
//    for (int i = 0; i < 8; i++)
//    {
//        if ((a % 2 != 0))
//        sum++;
//        a /= 2;
//    }
//    printf("二进制位中1的个数为%d", sum);
//
//    //求进制数
//    使用位运算判断一个数是偶数还是奇数
//    int num;
//    printf("请输入一个数：");
//    scanf("%d", &num);
//    if ((num & (1 << 0)) == 0)
//    {
//        printf("%d是偶数", num);
//    }
//    else //(num & （1<<0）) != 0
//    {
//        printf("%d是奇数", num);
//    }



    


    //求s = a + aa + aaa + aaaa + aa…a的值，其中a是一个数字。
    //例如，输入一个2，在输入一个5；2 + 22 + 222 + 2222 + 22222(此时共有5个数相加)，几个数相加有键盘控制。
   /* int num, a;
    long long next = 0, sum = 0;
    scanf("%d", &num);
    scanf("%d", &a);
    for (int i = 1; i <= num; i++)
    {
        next = next * 10 + a;
        sum += next;
    }
    printf("%lld", sum);*/






    //写一个c程序，输出下面的结果。
    //1
    //1 2
    //1 2 3
    //1 2 3 4
    //1 2 3 4 5

   /* int num;
    scanf("%d", &num);
    for (int i = 1; i <= 5; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            printf("%d ", j);
        }
        printf("\n");
    }*/

    //写一个c程序，输出下面的结果。
    //    A
    //   ABA
    //  ABCBA
    // ABCDCBA
    //ABCDEDCBA

    //int row = 5;
    //int i, j;
    //char ch;
    //for (i = 1; i <= row; i++)//保证5行
    //{
    //    //空格
    //    for (j = 1; j <= row - i; j++)
    //    {
    //        printf(" ");
    //    }
    //    //中间字符前
    //    for (ch = 'A'; ch <= 'A' + i - 1; ch++)
    //    {
    //        printf("%c", ch);
    //    }
    //    //中间字符后
    //    for (ch = 'A' + i - 1 - 1; ch >= 'A'; ch--)
    //    {
    //        printf("%c", ch);
    //    }
    //    printf("\n");

    
    //输入一个正整数并将其分解质因数

    //int num, i;
    //printf("请输入一个正整数:");
    //scanf("%d", &num);
    //printf("%d=", num);

    //for (i = 2; i <= num; i++)//100
    //{
    //    //
    //    while (num != i)
    //    {
    //        if (num % i == 0)//100/2==50 50/2==25 25/3 25/4  25/5=5 5/5=1
    //        {
    //            printf("%d*", i);//2*2*5*5
    //            num = num / i;//50
    //        }
    //        else
    //        {
    //            break;
    //        }
    //    }

    //}
    //printf("%d", num);
    //return 0;

    
    
}